package com.houweishi.module.clocking.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.StringJoiner;

/**
 * 员工打卡管理对象 biz_clocking
 * 
 * @author houweishi
 * @date 2023-02-28
 */
@Data
public class BizClocking extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键 */
    private Long id;

    /** 用户id */
    private Long userId;

    /** 用户名称 */
    private String username;

    /** 员工id */
    private Long staffId;

    /** 员工姓名 */
    @Excel(name = "员工姓名")
    private String staffName;

    /**
     * 公司
     */
    @Excel(name = "公司")
    private String company;

    /**
     * 部门id
     */
    private Long deptId;

    /**
     * 部门
     */
    @Excel(name = "部门")
    private String deptName;

    /** 打卡时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "打卡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime clockTime;

    /** 打卡类型名称 */
    @Excel(name = "打卡类型名称")
    private String clockType;

    /** 地址id */
    private Long clockAddressId;

    /** 打卡地址名称 */
    @Excel(name = "打卡地址名称")
    private String addressName;

    /** 上传打卡照片 */
    @Excel(name = "上传打卡照片")
    private String photograph;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 打卡类型表id（新增） */
    private Long clockTypeId;
    /** 打卡状态（0：未打卡，1：已打卡）（新增） */
    @Excel(name = "打卡状态（0：未打卡，1：已打卡）")
    private String clockStatus;

    @Override
    public String toString() {
        return new StringJoiner(", ", BizClocking.class.getSimpleName() + "[", "]")
                .add("id=" + id)
                .add("userId=" + userId)
                .add("username='" + username + "'")
                .add("staffId=" + staffId)
                .add("staffName='" + staffName + "'")
                .add("clockTime=" + clockTime)
                .add("clockType='" + clockType + "'")
                .add("clockAddressId=" + clockAddressId)
                .add("addressName='" + addressName + "'")
                .add("photograph='" + photograph + "'")
                .add("delFlag='" + delFlag + "'")
                .add("clockTypeId=" + clockTypeId)
                .add("clockStatus='" + clockStatus + "'")
                .add("company='" + company + "'")
                .add("deptId=" + deptId)
                .add("deptName='" + deptName + "'")
                .toString();
    }
}
